home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1993-10-25 | 3.1 KB | 78 lines | [.Ob./.Ob5] |
- Syntax10.Scn.Fnt
- FoldElems
- Syntax10.Scn.Fnt
- VAR z, d: COMPLEX; i: INTEGER;
- BEGIN i:=0; z:=c; d.re:=z.re*z.re; d.im:=z.im*z.im;
- WHILE (i <= N) & (d.re+d.im <= 4.0) DO
- z.im:=2*z.re*z.im+c.im; z.re:=d.re-d.im+c.re;
- d.re:=z.re*z.re; d.im:=z.im*z.im;
- INC(i)
- END;
- RETURN i
- END Iterate;
- Syntax10.Scn.Fnt
- FoldElems
- Syntax10.Scn.Fnt
- z: COMPLEX; startre, stepre, stepim: REAL; x, yh, yl, ym: INTEGER; ch: CHAR; M: Viewers.ViewerMsg;
- Syntax10i.Scn.Fnt
- Syntax10.Scn.Fnt
- startre:=-2.0; stepre:=2.0/Display.Width; stepim:=2.0/Display.Height; z.re:=startre; z.im:=1.0;
- yh:=Display.Height; ym:=Display.Height DIV 2; yl:=-1;
- Syntax10.Scn.Fnt
- Display.ReplConst(Display.black, 0, 0, Display.Width, Display.Height, Display.replace);
- Syntax10.Scn.Fnt
- (yh > ym)
- Syntax10.Scn.Fnt
- (Input.Available()=0)
- Syntax10.Scn.Fnt
- FoldElems
- Syntax10.Scn.Fnt
- IF ODD(Iterate(z)) THEN
- Display.Dot(Display.white, x, yh, Display.replace);
- Display.Dot(Display.white, x, yl, Display.replace)
- END;
- INC(x); z.re:=z.re+stepre
- Syntax10i.Scn.Fnt
- DEC(yh); INC(yl);
- z.im:=z.im-stepim; x:=0; z.re:=startre;
- WHILE x < Display.Width DO
- draw dot if odd number of iterations
- Syntax10.Scn.Fnt
- Input.Read(ch);
- Syntax10.Scn.Fnt
- M.id:=Viewers.suspend; Viewers.Broadcast(M); M.id:=Viewers.restore; Viewers.Broadcast(M)
- (*Display.Height is always even under MacOberon 3.x *)
- VAR
- some variables
- BEGIN
- init variables
- clear screen
- WHILE
- not all lines processed
- no key pressed
- process next line
- END;
- wait for key press
- refresh screen
- END Draw;
- Syntax10i.Scn.Fnt
- MODULE Mandelbrot; (* Michael Franz, 16.1.92 / 25.10.93 *)
- IMPORT
- Display, Input, Viewers;
- CONST
- N=50;
- TYPE
- COMPLEX=RECORD re, im: REAL END;
- PROCEDURE Iterate(c: COMPLEX): INTEGER;
- PROCEDURE Draw*;
- click on the triangle to expand the folded text
- END Mandelbrot.Draw <- This is a command that can be executed directly.
- This document contains "hypertext folds" that aid in the construction
- of programs via the process of stepwise refinement.
- You can compile this program without first expanding all of the folded text
- by marking this viewer (press Enter on the keypad) and using the command
- Folds.Compile *
- In order to expand and collaps all of the folds simultaneously, mark this
- viewer and execute one of the two commands below:
- FoldElems.Expand FoldElems.Collapse
-